[GAME-2] Acerte os rortões nas janelas (jogo com gráficos)
Publicado por Samuel Leonardo 26/11/2008
[ Hits: 5.818 ]
Homepage: localhost
Download [GAME2]Acerte o Portões na Janela.tar.gz
Meu segundo script, um jogo simples que mostra como funciona a colisão nos jogos e como simular o tiro de um canhão.
É bem legal, vocês devem conferir!
Acompanha uma versão pré-compilada.
ATENÇÃO: É necessário antes ter os arquivos de desenvolvimento da libSDL instalados.
Para compilar: gcc -o game game.c -lSDL
Para rodar: ./game
/* # # ###desenvolvido por: Samuel Leonardo (Sam L.) EM 20/11/2008 #######Historico de desenvolvimento: ####### A idéia de fazer esse 'game' surgiu por falta do que fazer. :P ########### ############# ATENÇÃO -> USUÁRIOS DE WINDOWS, NÃO SE OFENDAM PELO QUE FIZ COM O ############# LOGO E O DESKTOP DESTE "escelêntiçimo e pherFEItiçimo çixtema" operacional, ############# ACONTECE QUE NÃO CONSEGUI RESISTIR A FAZER UMA PIADA. hehe!!! bricadeira!!! ####### # # ########BAIXE UM EXECELENTE APOSTILA SOBRE DESENVOLVIMENTO DE JOGOS COM SDL AQUI:######### ## http://silveira.wordpress.com/2006/09/21/apostila-de-desenvolvimento-de-jogos/ # ################################################################# */ #include <SDL/SDL.h> #include <SDL/SDL_image.h> int Colisao(SDL_Rect *a, SDL_Rect *b) { return (!((a->x > b->x + b->w)||(a->x + a->w < b->x)||(a->y > b->y + b->h)||(a->y + a->h < b->y))); } int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen, *bala, *alvo[2], *efeito, *cannon, *obstaculo[2]; SDL_Rect destino,fonte[2], posicao; screen = SDL_SetVideoMode(800, 350, 0, SDL_SWSURFACE | SDL_HWSURFACE | SDL_ANYFORMAT); bala = SDL_LoadBMP("Imagens/cabeca.bmp"); alvo[0] = SDL_LoadBMP("Imagens/monitor.bmp"); alvo[1] = SDL_LoadBMP("Imagens/windows-vista-logo.bmp"); efeito = SDL_LoadBMP("Imagens/fumaca.bmp"); cannon = SDL_LoadBMP("Imagens/tux-canhao.bmp"); SDL_SetColorKey(cannon, SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(cannon->format, 255, 255, 255)); destino = (SDL_Rect){40,240,20,20};//posição da bala fonte[0] = (SDL_Rect){600, 240,40,40};//posição do XP, obstaculo[0] fonte[1] = (SDL_Rect){700, 240,40,40};//posição do VISTA, obstaculo[1] posicao = (SDL_Rect){0,220,0,0}; //posição do canhão int fim = 0, i; // a bala tem aceleração e velocidade int velo = 0, acel = 1, atira = 0, acres_y = 4; SDL_Event evento; while(!fim) { Uint8 *teclado; SDL_PumpEvents(); teclado = SDL_GetKeyState(0); if(teclado[SDLK_ESCAPE]) fim = 1; if(teclado[SDLK_UP] && !atira) { posicao.y -= 10; destino.y = posicao.y + 20; } if(teclado[SDLK_DOWN] && !atira) { posicao.y += 10; destino.y = posicao.y + 20; } while(SDL_PollEvent(&evento)) if(evento.type == SDL_QUIT) fim =1; if(!atira) { if(teclado[SDLK_SPACE]) { velo = 10; atira = 1; } } if(atira) { velo = velo - acel; destino.y -= velo; destino.x += 30; for(i=0; i < 2;i++) if(Colisao(&destino,&fonte[i])) { SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,255,255,255)); atira = 0; destino.x = 40; destino.y = posicao.y + 20; SDL_BlitSurface(efeito, NULL, screen, &fonte[i]); SDL_Flip(screen); SDL_Delay(1500); } } if(destino.x > 700) { atira = 0; destino.x = 40; destino.y = posicao.y + 20; } if((fonte[0].y + fonte[0].h + acres_y > 350) || (fonte[0].y + acres_y < 0)) acres_y = -acres_y; fonte[0].y += acres_y; SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,255,255,255)); SDL_BlitSurface(bala, NULL, screen, &destino); SDL_BlitSurface(alvo[0], NULL, screen, &fonte[0]); SDL_BlitSurface(alvo[1], NULL, screen, &fonte[1]); SDL_BlitSurface(cannon, NULL, screen, &posicao); SDL_Flip(screen); SDL_Delay(60); } SDL_Quit(); return 0; }
Sistema básico de cadastro usando Listas Encadeadas
Busca, inserção e remoção de elementos numa lista
Script para trocar o papel de parede do fluxbox em GTK
Funções com número variável de argumentos
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta